package jf.jcube.data;

import java.util.List;

import jf.jcube.model.Dimension;
import jf.jcube.spec.Order;
import jf.jcube.spec.Selection;

public interface DataLoader {

    /**
     * Set the Ordering, if supported, and return true. If sorting can not be
     * supported by implementation it will return false.
     * 
     * 
     * @param order
     * @return true of order is supported.
     */
    boolean setOrdering(List<Order> order);

    /**
     * Returns new sub-data loader, normally for concurrent loading. If the sub
     * data loader cannot be created (or supported) it will return null.
     * 
     * @param filters
     * @return
     */
    DataLoader newSubDataLoader(List<Selection> filters);

    List<Dimension> getDimensions();
    
    

}
